#ifndef WORDANALYSIS_H
#define WORDANALYSIS_H

#define SYM_SIZE 21
#define ID_SIZE 21
#define SOURSE_SIZE 100
#define WORDS_SIZE 32
#define MAX_IDEN_LEN 10
#define DIVIDESY_SIZE 6
#define MAX_NUM_SIZE 32
#define errornum int
void init();
void getSym();
int getch();
int findDelimeter(char a);
int findKeyWord();
void myprint();

typedef enum tagwordSym
{
    AUTOSYM = 0,
    BREAKSYM = 1,
    CASESYM = 2,
    CHARSYM = 3,
    CONSTSYM = 4,
    CONTINUESYM = 5,
    DEFAULTSYM = 6,
    DOSYM = 7,
    DOUBLESYM = 8,
    ELSESYM = 9,
    ENUMSYM = 10,
    EXTERNSYM = 11,
    FLOATSYM = 12,
    FORSYM = 13,
    GOTOSYM = 14,
    IFSYM = 15,
    INTSYM = 16,
    LONGSYM = 17,
    REGISTERSYM = 18,
    RETURNSYM = 19,
    SHORTSYM = 20,
    SIGNEDSYM = 21,
    SIZEOFSYM = 22,
    STATICSYM = 23,
    STRUCTSYM = 24,
    SWITCHSYM = 25,
    TYPEDEFSYM = 26,
    UNIONSYM = 27,
    UNSIGNEDSYM = 28,
    VOIDSYM = 29,
    VOLATILESYM = 30,
    WHILESYM = 31,
    EQUAL = 32,
    LESS = 33,
    GREATER = 34,
    NOT = 35,
    NEQUAL = 36,
    LEQUAL = 37,
    GEQUAL = 38,
    MULEQUAL = 39,
    EVALUATE = 40,
    PLUS = 41,
    MINUS = 42,
    MULTIPLY = 43,
    DIVIDE = 44,
    REMAIN = 45,
    MINUSEQUAL = 46,
    PLUSEQUAL = 47,
    REMEQUAL = 48,
    DIVEQUAL = 49,
    IDENT = 50,
    NUMBER = 51,
    COMMA = 52,
    SEMICOLON = 53,
    LBRACKET = 54,
    RBRACKET = 55,
    LBRACE = 56,
    RBRACE = 57,
    CONSTCHAR = 58,
    CONSTSTRING = 59,
    UNKNOWN = 60

} wordSym;

char *keyword[WORDS_SIZE];
char ch;
wordSym wsym[WORDS_SIZE];
char delimeter[DIVIDESY_SIZE];
wordSym dsym[DIVIDESY_SIZE];
char id[MAX_IDEN_LEN + 1];
char number[MAX_NUM_SIZE + 1];
wordSym sym;
FILE * fpin;
FILE * fpout;
#endif
